package cn.edu.sdjzu.xg.eagle.dao.mapper;

import cn.edu.sdjzu.xg.eagle.dao.ActorDao;
import cn.edu.sdjzu.xg.eagle.exception.BaseException;
import cn.edu.sdjzu.xg.eagle.util.JdbcHelper;

import java.sql.*;

/**
 * @author tg.si@188.com
 * @todo
 * @since 2024/4/23 11:04
 */

public final class ActorDaoImpl implements ActorDao {
    /**
     * 由于Teacher扩展了Actor，前者对象id取后者的id的值。
     * Actor是个抽象类，不能创建对象。
     * Actor表是必须存在，用来生成id值，以便对应的子类对象id使用这个id赋值
     * @param connection 来自Service的Connection对象
     * @return 成功增加：新对象的id，失败：0
     * @throws SQLException
     */
//    @Override
//    public Long add(Connection connection) throws SQLException, BaseException {
//        //根据连接对象准备语句对象，如果SQL语句为多行，注意语句不同部分之间要有空格
//        PreparedStatement actor_preparedStatement =
//                connection.prepareStatement(
//                        "INSERT INTO bysj.actor () VALUES ()",
//                        Statement.RETURN_GENERATED_KEYS);//要求返回新加元组的主键
//        //执行预编译语句，用其返回值、影响的行数为赋值affectedRowNum
////        int affectedRowNum = actor_preparedStatement.executeUpdate();
//        Long idOfAddedActor = 0L;
//        ResultSet resultSet = actor_preparedStatement.getGeneratedKeys();//获得生成的主键集合
//        if (resultSet.next()) {
//            idOfAddedActor = resultSet.getLong(1);//读取第一个结果的主键（第1列，共1列）
//        }
//        //本方法是事务的一部分，不能释放数据库连接
//        JdbcHelper.close(actor_preparedStatement);
//        //是否成功新增元组
//        return idOfAddedActor;
//    }


    /**
     * 根据id，查找Actor各个子类的对象
     *
     * @param connection
     * @param id         目标对象的id
     * @return id对应的目标对象
     * @throws SQLException
     */
//    public Actor find(Connection connection, int id) throws SQLException {
//        //先后在Sudent和Teacher中查找相应的id
//        Actor desiredActor = null;
//        //查询id对应的Student对象
//        desiredActor = StudentService.getInstance().find(id);
//        if (desiredActor != null) {
//            return desiredActor;
//        }
//        //查询id对应的Teacher对象
//        desiredActor = TeacherService.getInstance().find(id);
//        return desiredActor;
//        //在各子类对象中均未查询到
//    }



//    public TreeSet<Roles> getRoles() throws SQLException {
//        return null;
//    }
    /**
     {
     "指导教师角色":
     [{"description":"方向管理",
     "url":"openArea.ctl",
     "no":"21"},
     {"description":"课题管理",
     "url":"project.ctl",
     "no":"22"}
     ],
     "评阅人角色":
     [{"description":"评阅",
     "url":"review.ctl",
     "no":"21"}
     ],
     "答辩委员角色":
     [{"description":"答辩",
     "url":"oralDefense.ctl",
     "no":"21"}
     ],

     "答辩组长角色":
     [{"description":"答辩成绩",
     "url":"oralDefenseComeout.ctl",
     "no":"21"},
     {"description":"推荐优秀成果",
     "url":"oralDefenseRecommendation.ctl",
     "no":"21"}
     ]
     }
     */
}

